package com.yituo.mjworld.mvc.entity.web;

import java.util.HashMap;
import java.util.Map;

/**
 * 用户权限的静态类.
 * 此表改动为业务逻辑上的改动
 * 持久化到数据库个人认为不方便!
 */
public class UserRole {


  // 系统主要的管理和操作人员
  /**
   * 总代
   */
  public static final int SUPER_ADMIN = 1;
  /**
   * 省级代理
   */
  public static final int PRO_AGENT = 2;
  /**
   * 市级代理
   */
  public static final int CITY_AGENT = 3;
  /**
   * 区/县级代理
   */
  public static final int AREA_AGENT = 4;
  /**
   * 修理店店长
   */
  public static final int SHOP_MAN = 5;
  /**
   * 消费者
   */
  public static final int WEB_USER = 6;

  /**
   * 普通管理员,
   */
  public static final int NORMAL_ADMIN = 7;
  /**
   * 仓库管理员
   */
  public static final int STORE_MANAGER = 8;

  /**
   * 供货商
   */
  public static final int SUPPLIER = 9;


  public static void init() {
    Map<Integer, String> map = new HashMap<Integer, String>(9);
    map.put(1, "超级管理员/总代");
    map.put(2, "省级代理");
    map.put(3, "市级代理");
    map.put(4, "区县级代理");
    map.put(5, "修理店店长");
    map.put(6, "普通用户");
    map.put(7, "普通管理员(代理的助手)");
    map.put(8, "仓库管理员");
    map.put(9, "货商");
  }

  /**
   * 是否为超级管理员
   *
   * @param roleId
   * @return
   */
  public static boolean isSuperAdmin(int roleId) {
    return roleId == SUPER_ADMIN;
  }

  /**
   * 是否为普通管理员
   *
   * @param roleId
   * @return
   */
  public static boolean isNormalAdmin(int roleId) {
    return roleId == NORMAL_ADMIN;
  }

  /**
   * 是否为仓管员
   *
   * @param roleId
   * @return
   */
  public static boolean isStoreManager(int roleId) {
    return roleId == STORE_MANAGER;
  }

  /**
   * 是否为省级代理
   *
   * @param roleId
   * @return
   */
  public static boolean isProAgent(int roleId) {
    return roleId == PRO_AGENT;
  }

  /**
   * 是否为市级代理
   *
   * @return
   */
  public static boolean isCityAgent(int roleId) {
    return roleId == CITY_AGENT;
  }

  /**
   * 是否为区级代理
   *
   * @return
   */
  public static boolean isAreaAgent(int roleId) {
    return roleId == AREA_AGENT;
  }


  /**
   * 是否为修理店的管理者
   *
   * @param roleId
   * @return
   */
  public static boolean isShopManager(int roleId) {
    return roleId == SHOP_MAN;
  }

  /**
   * 是否为普通管理员
   *
   * @param roleId
   * @return
   */
  public static boolean isWebUser(int roleId) {
    return roleId == WEB_USER;
  }

  /**
   * 是否为供货商
   *
   * @return
   */
  public static boolean isSupplier(int roleId) {
    return roleId == SUPPLIER;
  }


  /**
   * 是否为超级管理员
   *
   * @param user
   * @return
   */
  public static boolean isSuperAdmin(WebUser user) {
    if (user == null) {
      return false;
    }
    return user.getRule() == SUPER_ADMIN;
  }

  /**
   * 是否为普通管理员
   *
   * @param user
   * @return
   */
  public static boolean isNormalAdmin(WebUser user) {
    if (user == null) {
      return false;
    }
    return user.getRule() == NORMAL_ADMIN;
  }

  /**
   * 是否为仓管员
   *
   * @param user
   * @return
   */
  public static boolean isStoreManager(WebUser user) {
    if (user == null) {
      return false;
    }
    return user.getRule() == STORE_MANAGER;
  }

  /**
   * 是否为省级代理
   *
   * @param user
   * @return
   */
  public static boolean isProAgent(WebUser user) {
    if (user == null) {
      return false;
    }
    return user.getRule() == PRO_AGENT;
  }

  /**
   * 是否为市级代理
   *
   * @return
   */
  public static boolean isCityAgent(WebUser user) {
    if (user == null) {
      return false;
    }
    return user.getRule() == CITY_AGENT;
  }

  /**
   * 是否为区级代理
   *
   * @return
   */
  public static boolean isAreaAgent(WebUser user) {
    if (user == null) {
      return false;
    }
    return user.getRule() == AREA_AGENT;
  }


  /**
   * 是否为修理店的管理者
   *
   * @param user
   * @return
   */
  public static boolean isShopManager(WebUser user) {
    if (user == null) {
      return false;
    }
    return user.getRule() == SHOP_MAN;
  }

  /**
   * 是否为普通管理员
   *
   * @param user
   * @return
   */
  public static boolean isWebUser(WebUser user) {
    if (user == null) {
      return false;
    }
    return user.getRule() == WEB_USER;
  }

  /**
   * 是否为供货商
   *
   * @return
   */
  public static boolean isSupplier(WebUser user) {
    if (user == null) {
      return false;
    }
    return user.getRule() == SUPPLIER;
  }

  /**
   * 是否为代理用户(包括省级,市级,区县级)
   *
   * @param user
   * @return
   */
  public static boolean isAgent(WebUser user) {
    if (user == null) {
      return false;
    }
    return user.getRule() == AREA_AGENT || user.getRule() == PRO_AGENT || user.getRule() == CITY_AGENT;
  }

  /**
   * 是否为超级管理员或者代理或者普通用户
   *
   * @param user
   * @return
   */
  public static boolean isAdminOrAgentOrNormalUser(WebUser user) {
    if (user == null) {
      return false;
    }
    return isAgent(user) || isSuperAdmin(user) || isWebUser(user);
  }


}
